package com.xjy.system.domain.bo;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 费用报销信息编辑对象 sys_reimbursement
 *
 * @author xjy
 * @date 2022-02-10
 */
@Data
@ApiModel("费用报销信息报销对象")
public class SysReimbursementChargeBo {
	@ApiModelProperty("费用报销ID")
	private Long id;

	@ApiModelProperty("项目id")
	@NotNull(message = "项目不能为空")
	private Long projId;

	@ApiModelProperty("项目名称")
	private String projName;

	@ApiModelProperty("合同ID")
	private Long contractId;

	@ApiModelProperty("合同名称")
	private String contractName;

	@ApiModelProperty("结算项目id")
	private Long resultProjId;

	@ApiModelProperty("结算项目名称")
	private String resultProjName;

	@ApiModelProperty("费用报销单据编号")
	@NotBlank(message = "费用报销单据编号不能为空")
	private String reimbursementNo;

	@ApiModelProperty("预算科目ID")
	private Long budgetId;

	@ApiModelProperty("科目名称")
	private String budgetName;

	@ApiModelProperty("关联单位")
	private String affiliatedUnit;

	@ApiModelProperty("关联单位id")
	private Long affiliatedUnitId;

	@ApiModelProperty("关联个人")
	private String affiliatedPerson;

	@ApiModelProperty("关联个人id")
	private Long affiliatedPersonId;

	@ApiModelProperty("经办人")
	@NotBlank(message = "经办人不能为空")
	private String handler;

	@ApiModelProperty("费用部门ID")
	private Long expenseDeptId;

	@ApiModelProperty("经办人id")
	@NotNull(message = "经办人id不能为空")
	private Long handlerId;

	@ApiModelProperty("代办标识0：无代办；1：代办。默认0")
	private Integer agencyLogo;

	@ApiModelProperty("费用报销日期")
	@NotNull(message = "费用报销日期不能为空")
	@DateTimeFormat(pattern = "yyyy-MM-dd")
	private Date createTime;

	@ApiModelProperty("费用部门")
	@NotBlank(message = "费用部门不能为空")
	private String expenseDept;

	@ApiModelProperty("摘要")
	@NotBlank(message = "摘要不能为空")
	private String abstracted;

	@ApiModelProperty("报销金额")
	private BigDecimal reimbAmt;

	@ApiModelProperty("发票张数")
	@NotNull(message = "发票张数不能为空")
	private Long invoiceNum;

	@ApiModelProperty("发票影像：存文件路径")
	private String image;

	@ApiModelProperty("影像名称")
	private String imageName;

	@ApiModelProperty("影像文件上传时间")
	private Date uploadTime;

	@ApiModelProperty("关联个人借款单号")
	private String affiliatedOddNo;

	@ApiModelProperty("支付类别:0：支付报销，1：冲销借款，2：冲销预付")
	@NotNull(message = "支付类别:0：支付报销，1：冲销借款，2：冲销预付不能为空")
	private Integer payType;

	@ApiModelProperty("关联个人借款单号冲销合计")
	private BigDecimal affiliatedOddNoAmt;

	@ApiModelProperty("支付方式0：现金，1：银行（默认：银行)")
	private Integer reimbPayWay;

	@ApiModelProperty("支付账户账户ID")
	private Long reimbPayAccountId;

	@ApiModelProperty("关联预付账款单号")
	private String affiliatedUnitOddNo;

	@ApiModelProperty("报销支付账户名称")
	private String reimbPayAccountName;

	@ApiModelProperty("关联预付账款单号冲销合计")
	private BigDecimal affiliatedUnitOddNoAmt;

	@ApiModelProperty("报销支付账户开户行")
	private String reimbPayAccountBank;

	@ApiModelProperty("报销支付账户号码")
	private String reimbPayAccountNo;

	@ApiModelProperty("备注")
	private String remark;

	@ApiModelProperty("支付账户金额合计")
	private BigDecimal reimbPayAmt;

	@ApiModelProperty("预留字段1")
	private String reserveOne;

	@ApiModelProperty("预留字段2")
	private String reserveTwo;

	@ApiModelProperty("预留字段3")
	private String reserveThree;

	@ApiModelProperty("修改时间")
	private Date updateTime;

	@ApiModelProperty("审核状态 0：未审核（默认）；1：审核")
	private Boolean auditStatus;

	@ApiModelProperty("对方银行账户名称")
	private String colBankName;

	@ApiModelProperty("对方银行账户开户行")
	private String colBank;

	@ApiModelProperty("删除状态 0. 正常 1. 删除")
	private Integer delFlag;

	@ApiModelProperty("对方银行账户号码")
	private String colBankNo;

	//支付类别:0：支付报销，1：冲销借款，2：冲销预付
	@ApiModelProperty("冲销借款单据集合")
	private List<SysLoanChargeBo> loanList;


	//支付类别:0：支付报销，1：冲销借款，2：冲销预付
	@ApiModelProperty("冲销预付款单据集合")
	private List<SysCreditAdvanceChargeBo> advanceList;
}
